package com.junyi.stream;

import com.junyi.entity.Customer;
import com.junyi.entity.Order;

import java.lang.reflect.Array;
import java.util.ArrayList;

import static java.util.stream.Collectors.partitioningBy;

/**
 * partitioningBy 用于分区，分区是特殊的分组，只有 true 和 false 两组。比如，我们把用户按照是否下单进行分区，给 partitioningBy 方法传入一个 Predicate 作为数据分区的区分
 * 输出是Map<Boolean, List<T>>
 * @time: 2022/6/29 16:03
 * @version: 1.0
 * @author: junyi Xu
 * @description:
 */
public class PartitionBy {
    public static void main(String[] args) {

        ArrayList<Order> orders = new ArrayList<>();
        //根据是否有下单记录进行分区
        System.out.println(Customer.getData().stream().collect(
                partitioningBy(customer -> orders.stream().mapToLong(Order::getCustomerId)
                        .anyMatch(id -> id == customer.getId()))));
    }
}
